Aller au contenu principal

Sliding Window

121 Best Time to Buy and Sell Stock

def maxProfit(prices: List[int]) -> int:
res = 0
lowest = prices[0]
for i in range(len(prices)):
if prices[i] < lowest:
lowest = prices[i]
else:
res = max(res, prices[i] - lowest)
return res

3 Longest Substring Without Repeating Characters

Time Complexity: O(n). The sliding window technic only require us to iterate over the input string once.

Space Complexity: O(1). The memo hash set can only contain unique characters, at most 26 characters which is O(1).

def lengthOfLongestSubstring(s: str) -> int:
memo = set()
l, r = 0, 0
res = 0

while r < len(s):
if s[r] not in memo:
memo.add(s[r])
r += 1
res = max(res, r - l)
else:
memo.remove(s[l])
l += 1

return res

424 Longest Repeating Character Replacement